package p;

import java.util.Collections;
import java.util.Map;

class A extends Sup<String> {
    public A(Map<String, Integer> map) {
        method(Collections.<String, Integer>emptyMap(/*nada*/));
        method2(Collections.<String, Integer>emptyMap(/*nada*/));
        method3(Collections.<String, Integer>emptyMap(/*nada*/));
        new A(Collections.<String, Integer>emptyMap(/*nada*/));
        super.sup(Collections.<String, Integer>emptyMap(/*nada*/));
        
        Map<String, Integer> emptyMap2= Collections.emptyMap(/*nada*/);
        emptyMap2= Collections.emptyMap(/*nada*/);
        Object o= Collections.emptyMap(/*nada*/);
        Map<? extends String, ?> emptyMap3= Collections.emptyMap(/*nada*/);
        
        Integer first= Collections.<String, Integer>emptyMap(/*nada*/).values().iterator().next();
    }

    void method(Map<String, Integer> map) { }
    void method2(Map<? extends String, ?> map) {    }
    void method3(Object map) {    }
}

class Sup<S> {
    <A extends S, B> void sup(Map<A, B> map) {}
}
